Skip to content

Conversation

@wemeetagain
Copy link
Member

Motivation

TODO

Description

  • Add QUIC support
  • Add quicPort, quicPort6, disableQuic cli flags
  • By default, use port 9001 for QUIC, if port is specified, use port + 1
  • Advertise QUIC support in ENR
  • Prefer QUIC over TCP for dialing discovered peers

supercedes #7659

@wemeetagain
Copy link
Member Author

Current status is it doesn't sync

Seeing a few things:

Getting rate limited by peers:

Error: RESPONSE_ERROR_RATE_LIMITED: sNaPpYii1Wait 2.421649316s
    at async sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/request/index.js:113:13)
    at async ReqRespBeaconNode.sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/ReqResp.js:105:13)
    at async AsyncIterableBridgeHandler.onRequest (file:///usr/src/lodestar/packages/beacon-node/lib/util/asyncIterableToEvents.js:99:30)

(Also Error: RESPONSE_ERROR_RATE_LIMITED: sNaPpY#NRate limited. Request too large)

Seeing some garbled response errors

Error: RESPONSE_ERROR_undefined: E!i$MbOZ~v*v&15l6+yM(H|Y;j+305_4T6")C&dZ3=S(}/4k-d\7==FSG{Nhs(O)BE"\mXoT=lyF<7&bJ^s7=)Z	
    at async AsyncIterableBridgeHandler.onRequest (file:///usr/src/lodestar/packages/beacon-node/lib/util/asyncIterableToEvents.js:99:30)
    at async ReqRespBeaconNode.sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/ReqResp.js:105:13)
    at async sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/request/index.js:113:13)
    at responseDecodeSink (file:///usr/src/lodestar/packages/reqresp/lib/encoders/responseDecode.js:44:23)

Also, inspecting the data that's read/returned from the stream sometimes shows the repeating pattern 0100fe0100fe0100fe... which seems like some uninitialized data?

Eg: In one case, real data is in the first part of the buffer, but there's the uninitialized stuff at the end:

d2f1997fd88608ff060000734e6150705900990d001bb7cf1e80800400000d01540f0000018e00f7a79bb2b4235580a225db2e068427e8011df48101017678dadae137f0c367819a7b9ff2edbde26f148fee797060e5b38ae7ee7b9c2357687378753d49ed9ae6bbb699fbb8f682cba7276ebcb8e2b188e396f9ec8ad70c382ff4c913349a6e3061424ac29163cb9e58b664e4bdaa38003130a6f48d80c3dbebfb673dde67cc61b6ca9875688ea27f519f45c5ddf5b56f569f379127dac02aa881ed395f9fd7568b4f65bdb4eaa8d1152f9b62ae97932bdef43f9bc019baf9b3d0843f441b58033570daea9e2ade293fb45e4b5fbd3af567deba9226d7449739db2e2acf89510fe3fbda4ab481755003a5d53e68a657f2795865af92d737fbe5f0ad31b9bc6fc19e552a674c12d72c11bc7d9268031ba006167d4e0cad2ff7cc549a3efec03edbaf1f05bf1e903d2ae939bb73a284d362df8b0b9bb98feb2cb8e5c701c4615d58726de16c2dbee65f1a879d0ff30bf65ffab6654e7d5aa7d3933490274d50033dfccf6b746cd1b27e5be9f7a7c4787d1cbb6df087dcb31d5a5abb4300b3b9b63026126d60cb0140000000ffff80261db5010000000000002186fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe01

In another case, the entire thing is uninitialized:

0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe01

@github-actions
Copy link
Contributor

github-actions bot commented Jul 9, 2025

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: dc43a3e Previous: 48f2ff7 Ratio
phase0 processRegistryUpdates - 250000 badcase_full_deposits 329.89 us/op 11.786 ms/op 0.03
Full benchmark results
Benchmark suite Current: dc43a3e Previous: 48f2ff7 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 951.58 us/op 1.8660 ms/op 0.51
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 33.880 us/op 33.965 us/op 1.00
BLS verify - blst 1.6092 ms/op 664.59 us/op 2.42
BLS verifyMultipleSignatures 3 - blst 2.4968 ms/op 1.1407 ms/op 2.19
BLS verifyMultipleSignatures 8 - blst 2.4112 ms/op 1.6177 ms/op 1.49
BLS verifyMultipleSignatures 32 - blst 7.6747 ms/op 4.8826 ms/op 1.57
BLS verifyMultipleSignatures 64 - blst 9.6030 ms/op 8.9955 ms/op 1.07
BLS verifyMultipleSignatures 128 - blst 17.559 ms/op 17.141 ms/op 1.02
BLS deserializing 10000 signatures 678.49 ms/op 665.46 ms/op 1.02
BLS deserializing 100000 signatures 6.9917 s/op 6.6532 s/op 1.05
BLS verifyMultipleSignatures - same message - 3 - blst 1.0469 ms/op 778.26 us/op 1.35
BLS verifyMultipleSignatures - same message - 8 - blst 1.1599 ms/op 905.94 us/op 1.28
BLS verifyMultipleSignatures - same message - 32 - blst 1.8318 ms/op 1.6162 ms/op 1.13
BLS verifyMultipleSignatures - same message - 64 - blst 3.1700 ms/op 2.5144 ms/op 1.26
BLS verifyMultipleSignatures - same message - 128 - blst 4.6818 ms/op 4.3552 ms/op 1.07
BLS aggregatePubkeys 32 - blst 20.024 us/op 18.926 us/op 1.06
BLS aggregatePubkeys 128 - blst 71.473 us/op 69.463 us/op 1.03
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 59.167 ms/op 45.997 ms/op 1.29
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 57.979 ms/op 44.836 ms/op 1.29
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 43.423 ms/op 35.124 ms/op 1.24
getSlashingsAndExits - default max 74.648 us/op 71.015 us/op 1.05
getSlashingsAndExits - 2k 382.05 us/op 281.04 us/op 1.36
proposeBlockBody type=full, size=empty 8.2825 ms/op 5.4912 ms/op 1.51
isKnown best case - 1 super set check 282.00 ns/op 204.00 ns/op 1.38
isKnown normal case - 2 super set checks 217.00 ns/op 200.00 ns/op 1.08
isKnown worse case - 16 super set checks 223.00 ns/op 200.00 ns/op 1.11
InMemoryCheckpointStateCache - add get delete 2.9530 us/op 2.4000 us/op 1.23
validate api signedAggregateAndProof - struct 2.4448 ms/op 1.4320 ms/op 1.71
validate gossip signedAggregateAndProof - struct 2.3251 ms/op 1.4741 ms/op 1.58
batch validate gossip attestation - vc 640000 - chunk 32 133.48 us/op 114.86 us/op 1.16
batch validate gossip attestation - vc 640000 - chunk 64 116.72 us/op 101.98 us/op 1.14
batch validate gossip attestation - vc 640000 - chunk 128 106.93 us/op 96.558 us/op 1.11
batch validate gossip attestation - vc 640000 - chunk 256 107.85 us/op 94.162 us/op 1.15
pickEth1Vote - no votes 1.0104 ms/op 949.22 us/op 1.06
pickEth1Vote - max votes 9.8134 ms/op 6.7969 ms/op 1.44
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.228 ms/op 10.539 ms/op 1.35
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.108 ms/op 13.867 ms/op 1.67
pickEth1Vote - Eth1Data fastSerialize value x2048 510.52 us/op 416.11 us/op 1.23
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.4605 ms/op 3.6444 ms/op 1.22
bytes32 toHexString 396.00 ns/op 360.00 ns/op 1.10
bytes32 Buffer.toString(hex) 270.00 ns/op 232.00 ns/op 1.16
bytes32 Buffer.toString(hex) from Uint8Array 352.00 ns/op 325.00 ns/op 1.08
bytes32 Buffer.toString(hex) + 0x 283.00 ns/op 236.00 ns/op 1.20
Object access 1 prop 0.14000 ns/op 0.12000 ns/op 1.17
Map access 1 prop 0.13500 ns/op 0.12500 ns/op 1.08
Object get x1000 6.3700 ns/op 5.8580 ns/op 1.09
Map get x1000 6.7410 ns/op 6.2350 ns/op 1.08
Object set x1000 32.605 ns/op 29.064 ns/op 1.12
Map set x1000 21.467 ns/op 19.603 ns/op 1.10
Return object 10000 times 0.29780 ns/op 0.34630 ns/op 0.86
Throw Error 10000 times 4.3597 us/op 4.3896 us/op 0.99
toHex 133.32 ns/op 125.81 ns/op 1.06
Buffer.from 124.43 ns/op 120.41 ns/op 1.03
shared Buffer 83.982 ns/op 77.562 ns/op 1.08
fastMsgIdFn sha256 / 200 bytes 2.2500 us/op 2.1450 us/op 1.05
fastMsgIdFn h32 xxhash / 200 bytes 231.00 ns/op 205.00 ns/op 1.13
fastMsgIdFn h64 xxhash / 200 bytes 275.00 ns/op 260.00 ns/op 1.06
fastMsgIdFn sha256 / 1000 bytes 7.2530 us/op 7.0970 us/op 1.02
fastMsgIdFn h32 xxhash / 1000 bytes 365.00 ns/op 328.00 ns/op 1.11
fastMsgIdFn h64 xxhash / 1000 bytes 352.00 ns/op 335.00 ns/op 1.05
fastMsgIdFn sha256 / 10000 bytes 65.293 us/op 64.398 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.8310 us/op 1.8130 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 1.2910 us/op 1.1950 us/op 1.08
send data - 1000 256B messages 16.127 ms/op 11.594 ms/op 1.39
send data - 1000 512B messages 21.444 ms/op 17.979 ms/op 1.19
send data - 1000 1024B messages 28.239 ms/op 26.070 ms/op 1.08
send data - 1000 1200B messages 25.459 ms/op 19.817 ms/op 1.28
send data - 1000 2048B messages 25.256 ms/op 21.026 ms/op 1.20
send data - 1000 4096B messages 26.573 ms/op 25.989 ms/op 1.02
send data - 1000 16384B messages 42.017 ms/op 72.915 ms/op 0.58
send data - 1000 65536B messages 112.53 ms/op 205.98 ms/op 0.55
enrSubnets - fastDeserialize 64 bits 885.00 ns/op 878.00 ns/op 1.01
enrSubnets - ssz BitVector 64 bits 334.00 ns/op 330.00 ns/op 1.01
enrSubnets - fastDeserialize 4 bits 130.00 ns/op 131.00 ns/op 0.99
enrSubnets - ssz BitVector 4 bits 332.00 ns/op 331.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 118.60 us/op 123.22 us/op 0.96
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 138.19 us/op 175.90 us/op 0.79
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 197.95 us/op 219.20 us/op 0.90
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 370.76 us/op 400.73 us/op 0.93
prioritizePeers score 0:0 att 64-1 sync 4-1 450.23 us/op 485.19 us/op 0.93
array of 16000 items push then shift 1.5866 us/op 1.5842 us/op 1.00
LinkedList of 16000 items push then shift 7.0000 ns/op 6.8940 ns/op 1.02
array of 16000 items push then pop 75.315 ns/op 76.358 ns/op 0.99
LinkedList of 16000 items push then pop 6.8350 ns/op 6.9900 ns/op 0.98
array of 24000 items push then shift 2.3388 us/op 2.3434 us/op 1.00
LinkedList of 24000 items push then shift 6.8620 ns/op 7.2200 ns/op 0.95
array of 24000 items push then pop 101.93 ns/op 102.43 ns/op 1.00
LinkedList of 24000 items push then pop 6.7340 ns/op 6.7830 ns/op 0.99
intersect bitArray bitLen 8 6.2240 ns/op 6.2380 ns/op 1.00
intersect array and set length 8 37.012 ns/op 36.960 ns/op 1.00
intersect bitArray bitLen 128 29.069 ns/op 29.181 ns/op 1.00
intersect array and set length 128 604.19 ns/op 610.00 ns/op 0.99
bitArray.getTrueBitIndexes() bitLen 128 991.00 ns/op 1.0960 us/op 0.90
bitArray.getTrueBitIndexes() bitLen 248 1.7430 us/op 1.8820 us/op 0.93
bitArray.getTrueBitIndexes() bitLen 512 3.5640 us/op 3.7790 us/op 0.94
Buffer.concat 32 items 719.00 ns/op 603.00 ns/op 1.19
Uint8Array.set 32 items 878.00 ns/op 893.00 ns/op 0.98
Buffer.copy 2.0060 us/op 1.9650 us/op 1.02
Uint8Array.set - with subarray 1.4680 us/op 1.5050 us/op 0.98
Uint8Array.set - without subarray 812.00 ns/op 833.00 ns/op 0.97
getUint32 - dataview 204.00 ns/op 200.00 ns/op 1.02
getUint32 - manual 124.00 ns/op 123.00 ns/op 1.01
Set add up to 64 items then delete first 2.3024 us/op 2.2366 us/op 1.03
OrderedSet add up to 64 items then delete first 3.4946 us/op 3.3015 us/op 1.06
Set add up to 64 items then delete last 2.4648 us/op 2.4931 us/op 0.99
OrderedSet add up to 64 items then delete last 3.6426 us/op 3.6049 us/op 1.01
Set add up to 64 items then delete middle 2.5314 us/op 2.2966 us/op 1.10
OrderedSet add up to 64 items then delete middle 5.4454 us/op 5.4516 us/op 1.00
Set add up to 128 items then delete first 5.1356 us/op 4.9763 us/op 1.03
OrderedSet add up to 128 items then delete first 8.0536 us/op 8.5510 us/op 0.94
Set add up to 128 items then delete last 4.9667 us/op 5.1367 us/op 0.97
OrderedSet add up to 128 items then delete last 7.3664 us/op 8.0294 us/op 0.92
Set add up to 128 items then delete middle 5.0652 us/op 5.4091 us/op 0.94
OrderedSet add up to 128 items then delete middle 14.328 us/op 13.930 us/op 1.03
Set add up to 256 items then delete first 10.068 us/op 10.657 us/op 0.94
OrderedSet add up to 256 items then delete first 15.917 us/op 16.880 us/op 0.94
Set add up to 256 items then delete last 10.240 us/op 9.8987 us/op 1.03
OrderedSet add up to 256 items then delete last 16.937 us/op 14.867 us/op 1.14
Set add up to 256 items then delete middle 9.7346 us/op 9.9286 us/op 0.98
OrderedSet add up to 256 items then delete middle 41.317 us/op 40.672 us/op 1.02
transfer serialized Status (84 B) 2.1560 us/op 2.1540 us/op 1.00
copy serialized Status (84 B) 1.1010 us/op 1.1110 us/op 0.99
transfer serialized SignedVoluntaryExit (112 B) 2.1950 us/op 2.1770 us/op 1.01
copy serialized SignedVoluntaryExit (112 B) 1.1080 us/op 1.1190 us/op 0.99
transfer serialized ProposerSlashing (416 B) 2.2240 us/op 2.9200 us/op 0.76
copy serialized ProposerSlashing (416 B) 1.1520 us/op 1.1780 us/op 0.98
transfer serialized Attestation (485 B) 2.2280 us/op 2.2610 us/op 0.99
copy serialized Attestation (485 B) 1.1750 us/op 1.4750 us/op 0.80
transfer serialized AttesterSlashing (33232 B) 2.3090 us/op 2.3700 us/op 0.97
copy serialized AttesterSlashing (33232 B) 3.2150 us/op 3.7290 us/op 0.86
transfer serialized Small SignedBeaconBlock (128000 B) 2.6860 us/op 3.0100 us/op 0.89
copy serialized Small SignedBeaconBlock (128000 B) 8.7390 us/op 9.6410 us/op 0.91
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2640 us/op 3.4070 us/op 0.96
copy serialized Avg SignedBeaconBlock (200000 B) 13.014 us/op 13.758 us/op 0.95
transfer serialized BlobsSidecar (524380 B) 3.2100 us/op 3.5620 us/op 0.90
copy serialized BlobsSidecar (524380 B) 59.185 us/op 102.01 us/op 0.58
transfer serialized Big SignedBeaconBlock (1000000 B) 3.3800 us/op 3.7790 us/op 0.89
copy serialized Big SignedBeaconBlock (1000000 B) 298.78 us/op 109.20 us/op 2.74
pass gossip attestations to forkchoice per slot 2.7986 ms/op 2.8361 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 468.07 us/op 440.40 us/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 0 2.8444 ms/op 2.9016 ms/op 0.98
forkChoice updateHead vc 1000000 bc 64 eq 0 4.8151 ms/op 4.7096 ms/op 1.02
forkChoice updateHead vc 600000 bc 320 eq 0 2.8205 ms/op 2.7821 ms/op 1.01
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8986 ms/op 2.7521 ms/op 1.05
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1186 ms/op 3.3292 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 1000 10.493 ms/op 10.178 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 10000 10.611 ms/op 9.8606 ms/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 300000 13.325 ms/op 13.344 ms/op 1.00
computeDeltas 500000 validators 300 proto nodes 3.8703 ms/op 3.8161 ms/op 1.01
computeDeltas 500000 validators 1200 proto nodes 3.8567 ms/op 3.8445 ms/op 1.00
computeDeltas 500000 validators 7200 proto nodes 3.9370 ms/op 3.8557 ms/op 1.02
computeDeltas 750000 validators 300 proto nodes 5.7908 ms/op 5.6670 ms/op 1.02
computeDeltas 750000 validators 1200 proto nodes 5.7388 ms/op 5.6199 ms/op 1.02
computeDeltas 750000 validators 7200 proto nodes 5.7385 ms/op 5.6811 ms/op 1.01
computeDeltas 1400000 validators 300 proto nodes 10.890 ms/op 10.466 ms/op 1.04
computeDeltas 1400000 validators 1200 proto nodes 10.762 ms/op 10.662 ms/op 1.01
computeDeltas 1400000 validators 7200 proto nodes 10.890 ms/op 10.553 ms/op 1.03
computeDeltas 2100000 validators 300 proto nodes 16.786 ms/op 15.826 ms/op 1.06
computeDeltas 2100000 validators 1200 proto nodes 17.095 ms/op 16.170 ms/op 1.06
computeDeltas 2100000 validators 7200 proto nodes 17.387 ms/op 16.637 ms/op 1.05
altair processAttestation - 250000 vs - 7PWei normalcase 2.3627 ms/op 2.2246 ms/op 1.06
altair processAttestation - 250000 vs - 7PWei worstcase 3.2640 ms/op 3.1564 ms/op 1.03
altair processAttestation - setStatus - 1/6 committees join 136.35 us/op 135.74 us/op 1.00
altair processAttestation - setStatus - 1/3 committees join 257.91 us/op 266.32 us/op 0.97
altair processAttestation - setStatus - 1/2 committees join 373.57 us/op 361.44 us/op 1.03
altair processAttestation - setStatus - 2/3 committees join 489.80 us/op 439.64 us/op 1.11
altair processAttestation - setStatus - 4/5 committees join 640.98 us/op 622.51 us/op 1.03
altair processAttestation - setStatus - 100% committees join 775.78 us/op 730.37 us/op 1.06
altair processBlock - 250000 vs - 7PWei normalcase 6.8343 ms/op 4.2329 ms/op 1.61
altair processBlock - 250000 vs - 7PWei normalcase hashState 30.875 ms/op 28.953 ms/op 1.07
altair processBlock - 250000 vs - 7PWei worstcase 48.978 ms/op 33.715 ms/op 1.45
altair processBlock - 250000 vs - 7PWei worstcase hashState 87.761 ms/op 75.227 ms/op 1.17
phase0 processBlock - 250000 vs - 7PWei normalcase 2.1471 ms/op 1.6539 ms/op 1.30
phase0 processBlock - 250000 vs - 7PWei worstcase 26.529 ms/op 20.732 ms/op 1.28
altair processEth1Data - 250000 vs - 7PWei normalcase 386.13 us/op 332.00 us/op 1.16
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 8.4070 us/op 5.4880 us/op 1.53
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 51.000 us/op 34.985 us/op 1.46
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 18.196 us/op 9.5920 us/op 1.90
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.1510 us/op 6.0010 us/op 1.36
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 248.96 us/op 136.71 us/op 1.82
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 2.4482 ms/op 1.8305 ms/op 1.34
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.6877 ms/op 2.3180 ms/op 1.16
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.5317 ms/op 2.2031 ms/op 1.15
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 6.5918 ms/op 4.4093 ms/op 1.49
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.7957 ms/op 2.4270 ms/op 1.15
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 6.2401 ms/op 4.5886 ms/op 1.36
Tree 40 250000 create 822.15 ms/op 411.27 ms/op 2.00
Tree 40 250000 get(125000) 158.38 ns/op 135.21 ns/op 1.17
Tree 40 250000 set(125000) 2.1513 us/op 1.3516 us/op 1.59
Tree 40 250000 toArray() 22.064 ms/op 14.773 ms/op 1.49
Tree 40 250000 iterate all - toArray() + loop 21.737 ms/op 17.149 ms/op 1.27
Tree 40 250000 iterate all - get(i) 59.185 ms/op 51.127 ms/op 1.16
Array 250000 create 2.7969 ms/op 2.7495 ms/op 1.02
Array 250000 clone - spread 1.6215 ms/op 792.99 us/op 2.04
Array 250000 get(125000) 0.44500 ns/op 0.40500 ns/op 1.10
Array 250000 set(125000) 0.45700 ns/op 0.42700 ns/op 1.07
Array 250000 iterate all - loop 85.373 us/op 107.87 us/op 0.79
phase0 afterProcessEpoch - 250000 vs - 7PWei 46.879 ms/op 42.258 ms/op 1.11
Array.fill - length 1000000 8.5914 ms/op 3.3026 ms/op 2.60
Array push - length 1000000 22.430 ms/op 12.692 ms/op 1.77
Array.get 0.29248 ns/op 0.27285 ns/op 1.07
Uint8Array.get 0.46683 ns/op 0.43654 ns/op 1.07
phase0 beforeProcessEpoch - 250000 vs - 7PWei 21.794 ms/op 16.142 ms/op 1.35
altair processEpoch - mainnet_e81889 346.51 ms/op 250.44 ms/op 1.38
mainnet_e81889 - altair beforeProcessEpoch 23.619 ms/op 16.829 ms/op 1.40
mainnet_e81889 - altair processJustificationAndFinalization 7.5820 us/op 5.4100 us/op 1.40
mainnet_e81889 - altair processInactivityUpdates 7.2410 ms/op 4.1408 ms/op 1.75
mainnet_e81889 - altair processRewardsAndPenalties 45.223 ms/op 38.363 ms/op 1.18
mainnet_e81889 - altair processRegistryUpdates 791.00 ns/op 706.00 ns/op 1.12
mainnet_e81889 - altair processSlashings 191.00 ns/op 180.00 ns/op 1.06
mainnet_e81889 - altair processEth1DataReset 197.00 ns/op 177.00 ns/op 1.11
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2763 ms/op 1.1708 ms/op 1.09
mainnet_e81889 - altair processSlashingsReset 937.00 ns/op 876.00 ns/op 1.07
mainnet_e81889 - altair processRandaoMixesReset 1.3400 us/op 1.1260 us/op 1.19
mainnet_e81889 - altair processHistoricalRootsUpdate 185.00 ns/op 176.00 ns/op 1.05
mainnet_e81889 - altair processParticipationFlagUpdates 596.00 ns/op 505.00 ns/op 1.18
mainnet_e81889 - altair processSyncCommitteeUpdates 150.00 ns/op 139.00 ns/op 1.08
mainnet_e81889 - altair afterProcessEpoch 49.261 ms/op 44.186 ms/op 1.11
capella processEpoch - mainnet_e217614 1.0403 s/op 847.93 ms/op 1.23
mainnet_e217614 - capella beforeProcessEpoch 73.318 ms/op 61.398 ms/op 1.19
mainnet_e217614 - capella processJustificationAndFinalization 7.0350 us/op 5.1280 us/op 1.37
mainnet_e217614 - capella processInactivityUpdates 15.471 ms/op 14.138 ms/op 1.09
mainnet_e217614 - capella processRewardsAndPenalties 198.57 ms/op 163.14 ms/op 1.22
mainnet_e217614 - capella processRegistryUpdates 7.0590 us/op 6.3720 us/op 1.11
mainnet_e217614 - capella processSlashings 176.00 ns/op 181.00 ns/op 0.97
mainnet_e217614 - capella processEth1DataReset 175.00 ns/op 178.00 ns/op 0.98
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2446 ms/op 4.1396 ms/op 1.03
mainnet_e217614 - capella processSlashingsReset 1.0940 us/op 859.00 ns/op 1.27
mainnet_e217614 - capella processRandaoMixesReset 1.2800 us/op 1.1190 us/op 1.14
mainnet_e217614 - capella processHistoricalRootsUpdate 200.00 ns/op 176.00 ns/op 1.14
mainnet_e217614 - capella processParticipationFlagUpdates 547.00 ns/op 521.00 ns/op 1.05
mainnet_e217614 - capella afterProcessEpoch 117.18 ms/op 114.33 ms/op 1.02
phase0 processEpoch - mainnet_e58758 345.98 ms/op 292.82 ms/op 1.18
mainnet_e58758 - phase0 beforeProcessEpoch 87.611 ms/op 74.213 ms/op 1.18
mainnet_e58758 - phase0 processJustificationAndFinalization 6.6920 us/op 5.7240 us/op 1.17
mainnet_e58758 - phase0 processRewardsAndPenalties 40.627 ms/op 34.121 ms/op 1.19
mainnet_e58758 - phase0 processRegistryUpdates 3.1510 us/op 3.0220 us/op 1.04
mainnet_e58758 - phase0 processSlashings 178.00 ns/op 178.00 ns/op 1.00
mainnet_e58758 - phase0 processEth1DataReset 202.00 ns/op 176.00 ns/op 1.15
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 4.4251 ms/op 1.1634 ms/op 3.80
mainnet_e58758 - phase0 processSlashingsReset 1.0530 us/op 928.00 ns/op 1.13
mainnet_e58758 - phase0 processRandaoMixesReset 1.5990 us/op 1.1460 us/op 1.40
mainnet_e58758 - phase0 processHistoricalRootsUpdate 202.00 ns/op 180.00 ns/op 1.12
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.2930 us/op 891.00 ns/op 1.45
mainnet_e58758 - phase0 afterProcessEpoch 37.391 ms/op 36.196 ms/op 1.03
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.6875 ms/op 1.3982 ms/op 1.21
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 4.5404 ms/op 2.1771 ms/op 2.09
altair processInactivityUpdates - 250000 normalcase 23.311 ms/op 17.277 ms/op 1.35
altair processInactivityUpdates - 250000 worstcase 22.954 ms/op 18.537 ms/op 1.24
phase0 processRegistryUpdates - 250000 normalcase 6.5900 us/op 6.7650 us/op 0.97
phase0 processRegistryUpdates - 250000 badcase_full_deposits 329.89 us/op 11.786 ms/op 0.03
phase0 processRegistryUpdates - 250000 worstcase 0.5 120.65 ms/op 99.774 ms/op 1.21
altair processRewardsAndPenalties - 250000 normalcase 30.666 ms/op 27.563 ms/op 1.11
altair processRewardsAndPenalties - 250000 worstcase 32.301 ms/op 24.753 ms/op 1.30
phase0 getAttestationDeltas - 250000 normalcase 12.307 ms/op 6.6780 ms/op 1.84
phase0 getAttestationDeltas - 250000 worstcase 6.7572 ms/op 5.9936 ms/op 1.13
phase0 processSlashings - 250000 worstcase 100.07 us/op 92.930 us/op 1.08
altair processSyncCommitteeUpdates - 250000 13.554 ms/op 10.979 ms/op 1.23
BeaconState.hashTreeRoot - No change 265.00 ns/op 219.00 ns/op 1.21
BeaconState.hashTreeRoot - 1 full validator 94.458 us/op 85.934 us/op 1.10
BeaconState.hashTreeRoot - 32 full validator 1.2763 ms/op 890.00 us/op 1.43
BeaconState.hashTreeRoot - 512 full validator 10.640 ms/op 10.674 ms/op 1.00
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 91.346 us/op 94.748 us/op 0.96
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4782 ms/op 1.4997 ms/op 0.99
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 34.803 ms/op 31.353 ms/op 1.11
BeaconState.hashTreeRoot - 1 balances 87.660 us/op 71.148 us/op 1.23
BeaconState.hashTreeRoot - 32 balances 1.0503 ms/op 693.52 us/op 1.51
BeaconState.hashTreeRoot - 512 balances 10.329 ms/op 8.2273 ms/op 1.26
BeaconState.hashTreeRoot - 250000 balances 185.35 ms/op 197.33 ms/op 0.94
aggregationBits - 2048 els - zipIndexesInBitList 25.310 us/op 22.305 us/op 1.13
byteArrayEquals 32 54.827 ns/op 53.470 ns/op 1.03
Buffer.compare 32 17.495 ns/op 16.878 ns/op 1.04
byteArrayEquals 1024 1.6352 us/op 1.5745 us/op 1.04
Buffer.compare 1024 25.921 ns/op 24.158 ns/op 1.07
byteArrayEquals 16384 25.483 us/op 25.085 us/op 1.02
Buffer.compare 16384 187.53 ns/op 200.04 ns/op 0.94
byteArrayEquals 123687377 196.48 ms/op 189.60 ms/op 1.04
Buffer.compare 123687377 7.8923 ms/op 6.6820 ms/op 1.18
byteArrayEquals 32 - diff last byte 52.989 ns/op 51.355 ns/op 1.03
Buffer.compare 32 - diff last byte 17.491 ns/op 16.810 ns/op 1.04
byteArrayEquals 1024 - diff last byte 1.5992 us/op 1.5646 us/op 1.02
Buffer.compare 1024 - diff last byte 25.760 ns/op 25.449 ns/op 1.01
byteArrayEquals 16384 - diff last byte 25.531 us/op 24.778 us/op 1.03
Buffer.compare 16384 - diff last byte 193.81 ns/op 173.49 ns/op 1.12
byteArrayEquals 123687377 - diff last byte 191.34 ms/op 189.13 ms/op 1.01
Buffer.compare 123687377 - diff last byte 6.6117 ms/op 7.7235 ms/op 0.86
byteArrayEquals 32 - random bytes 5.0930 ns/op 5.1370 ns/op 0.99
Buffer.compare 32 - random bytes 17.627 ns/op 17.204 ns/op 1.02
byteArrayEquals 1024 - random bytes 5.1280 ns/op 5.4480 ns/op 0.94
Buffer.compare 1024 - random bytes 17.352 ns/op 20.775 ns/op 0.84
byteArrayEquals 16384 - random bytes 5.1100 ns/op 5.0950 ns/op 1.00
Buffer.compare 16384 - random bytes 17.286 ns/op 17.102 ns/op 1.01
byteArrayEquals 123687377 - random bytes 6.7700 ns/op 6.3600 ns/op 1.06
Buffer.compare 123687377 - random bytes 18.220 ns/op 18.110 ns/op 1.01
regular array get 100000 times 32.557 us/op 32.807 us/op 0.99
wrappedArray get 100000 times 39.101 us/op 33.243 us/op 1.18
arrayWithProxy get 100000 times 12.811 ms/op 13.473 ms/op 0.95
ssz.Root.equals 45.871 ns/op 48.364 ns/op 0.95
byteArrayEquals 44.577 ns/op 44.978 ns/op 0.99
Buffer.compare 10.131 ns/op 10.175 ns/op 1.00
processSlot - 1 slots 9.9870 us/op 10.555 us/op 0.95
processSlot - 32 slots 3.1659 ms/op 1.8869 ms/op 1.68
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.8628 ms/op 2.9883 ms/op 0.96
getCommitteeAssignments - req 1 vs - 250000 vc 2.1704 ms/op 2.1127 ms/op 1.03
getCommitteeAssignments - req 100 vs - 250000 vc 4.1834 ms/op 4.0742 ms/op 1.03
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3219 ms/op 4.3195 ms/op 1.00
findModifiedValidators - 10000 modified validators 733.04 ms/op 718.57 ms/op 1.02
findModifiedValidators - 1000 modified validators 681.29 ms/op 702.32 ms/op 0.97
findModifiedValidators - 100 modified validators 204.62 ms/op 273.80 ms/op 0.75
findModifiedValidators - 10 modified validators 133.30 ms/op 161.02 ms/op 0.83
findModifiedValidators - 1 modified validators 134.67 ms/op 140.21 ms/op 0.96
findModifiedValidators - no difference 183.24 ms/op 142.89 ms/op 1.28
compare ViewDUs 6.2828 s/op 6.0482 s/op 1.04
compare each validator Uint8Array 2.2467 s/op 1.0862 s/op 2.07
compare ViewDU to Uint8Array 1.0613 s/op 1.1006 s/op 0.96
migrate state 1000000 validators, 24 modified, 0 new 883.92 ms/op 971.38 ms/op 0.91
migrate state 1000000 validators, 1700 modified, 1000 new 1.1739 s/op 1.1350 s/op 1.03
migrate state 1000000 validators, 3400 modified, 2000 new 1.2604 s/op 1.1669 s/op 1.08
migrate state 1500000 validators, 24 modified, 0 new 899.05 ms/op 808.33 ms/op 1.11
migrate state 1500000 validators, 1700 modified, 1000 new 1.1470 s/op 1.0494 s/op 1.09
migrate state 1500000 validators, 3400 modified, 2000 new 1.3409 s/op 1.2294 s/op 1.09
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.0600 ns/op 4.2100 ns/op 1.20
state getBlockRootAtSlot - 250000 vs - 7PWei 579.84 ns/op 903.55 ns/op 0.64
naive computeProposerIndex 100000 validators 61.691 ms/op 52.801 ms/op 1.17
computeProposerIndex 100000 validators 1.4956 ms/op 1.5319 ms/op 0.98
naiveGetNextSyncCommitteeIndices 1000 validators 7.9201 s/op 7.6025 s/op 1.04
getNextSyncCommitteeIndices 1000 validators 109.03 ms/op 115.82 ms/op 0.94
naiveGetNextSyncCommitteeIndices 10000 validators 7.2324 s/op 8.2302 s/op 0.88
getNextSyncCommitteeIndices 10000 validators 111.33 ms/op 115.88 ms/op 0.96
naiveGetNextSyncCommitteeIndices 100000 validators 7.2949 s/op 8.1977 s/op 0.89
getNextSyncCommitteeIndices 100000 validators 111.82 ms/op 114.59 ms/op 0.98
naive computeShuffledIndex 100000 validators 23.056 s/op 23.854 s/op 0.97
cached computeShuffledIndex 100000 validators 552.49 ms/op 557.11 ms/op 0.99
naive computeShuffledIndex 2000000 validators 486.07 s/op 524.80 s/op 0.93
cached computeShuffledIndex 2000000 validators 28.740 s/op 53.496 s/op 0.54
computeProposers - vc 250000 600.52 us/op 624.76 us/op 0.96
computeEpochShuffling - vc 250000 40.640 ms/op 42.936 ms/op 0.95
getNextSyncCommittee - vc 250000 10.042 ms/op 11.268 ms/op 0.89
computeSigningRoot for AttestationData 20.938 us/op 21.978 us/op 0.95
hash AttestationData serialized data then Buffer.toString(base64) 1.5356 us/op 1.6762 us/op 0.92
toHexString serialized data 1.0682 us/op 1.2615 us/op 0.85
Buffer.toString(base64) 141.67 ns/op 155.40 ns/op 0.91
nodejs block root to RootHex using toHex 141.61 ns/op 136.33 ns/op 1.04
nodejs block root to RootHex using toRootHex 93.495 ns/op 85.773 ns/op 1.09
browser block root to RootHex using the deprecated toHexString 206.23 ns/op 227.66 ns/op 0.91
browser block root to RootHex using toHex 165.52 ns/op 176.50 ns/op 0.94
browser block root to RootHex using toRootHex 155.70 ns/op 167.65 ns/op 0.93

by benchmarkbot/action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants